package com.kxs.stu_manager.views;

import com.kxs.stu_manager.global.Student;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @ClassName StuPage
 * @Description: TODO 学生操作的页面类
 * @Author: 2119475835@qq.com
 * @Date: 2023/1/9
 */
public class StuPage {
    /**
     * 主菜单
     *
     * @return 用户选择的操作数
     */
    public static int stuMainPage(String competence) {
        String com1 = "";
        String com2 = "";

        switch (competence) {
            case "1":
                com1 = "（不可操作，权限不足）";
                break;
            case "2":
                com2 = "（不可操作，权限不足）";
                break;
        }
        System.out.println("* ************************************************* *");
        System.out.println("* ***************** 学生信息管理页面 ***************** *");
        System.out.println("* ************* 1 - 查找学生信息");
        System.out.println("* ************* 2 - 增加学生信息 "+ com2 );
        System.out.println("* ************* 3 - 修改学生信息 "+ com2 + com1);
        System.out.println("* ************* 4 - 删除学生信息 "+ com2 + com1);
        System.out.println("* ************* 0 - 结束查询并返回上一级");
        System.out.println("* ************************************************* *");

        Scanner sc = new Scanner(System.in);
        int num;
        do {
            System.out.print("请输入正确的选项：");
            num = sc.nextInt();
        } while (num < 0 || num > 4);
        return num;
    }

    /**
     * 查询二级菜单
     *
     * @return 用户选择的操作数
     */
    public static int secSelPage() {
        System.out.println("* *********************************** *");
        System.out.println("* ********** 查询功能选择页面 ********** *");
        System.out.println("* ********* 1 - 查询全部信息 ********** *");
        System.out.println("* ********* 2 - 按学号查询   ********** *");
        System.out.println("* ********* 3 - 按姓名查询   ********** *");
        System.out.println("* ********* 4 - 按性别查询   ********** *");
        System.out.println("* ********* 5 - 按年龄查询   ********** *");
        System.out.println("* ********* 6 - 按成绩查询   ********** *");
        System.out.println("* ********* 7 - 按电话查询   ********** *");
        System.out.println("* ********* 8 - 按班级查询   ********** *");
        System.out.println("* ********* 0 - 返回上一级   ********** *");
        System.out.println("* *********************************** *");
        int num;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的选项：");
            num = sc.nextInt();
        } while (num < 0 || num > 8);
        return num;
    }

    /**
     * 格式化输出学生信息
     *
     * @param stuList 学生信息集合
     */
    public static void showStu(ArrayList<Student> stuList) {
        if (stuList.isEmpty()) {
            failed("该学生信息不存在!~");
            return;
        }
        String[] sex = {"girl", "boy", "other"};
        System.out.printf("┌──────┬────────────┬──────┬──────┬──────┬────────────┬────────────┐\n");
        System.out.printf("│%-6s│%-12s│%-6s│%-6s│%-6s│%-12s│%-12s│\n", "ID", "NAME", "SEX", "AGE", "SCORE", "TEL", "CLASSID");

        for (Student stu : stuList) {
            System.out.printf("├──────┼────────────┼──────┼──────┼──────┼────────────┼────────────┤\n");
            System.out.printf("│%-6d│%-12s│%-6s│%-6d│%-6.1f│%-12s│%-12s│\n", stu.getId(),
                    stu.getName(),
                    sex[Integer.parseInt(stu.getSex())],
                    stu.getAge(),
                    stu.getScore(),
                    stu.getTel(),
                    stu.getClassid());

        }
        System.out.printf("└──────┴────────────┴──────┴──────┴──────┴────────────┴────────────┘\n");
    }

    /**
     * 失败页面
     */
    public static void failed(String info) {
        System.out.println("操作失败：" + info);
        ;
    }

    /**
     * 成功页面
     *
     * @param info 成功信息
     */
    public static void success(String info) {
        System.out.println("操作成功：" + info);
    }

    /**
     * 获取要查询的学生ID
     *
     * @return 要查询的学生ID
     */
    public static int getStuID() {
        Scanner sc = new Scanner(System.in);
        int id;
        do {
            System.out.print("请输入学生ID：");
            id = sc.nextInt();
            if (id <= 0) { // 学号不能 <= 0
                System.out.println("学号非法！~");
            } else {
                break;
            }
        } while (true);
        return id;
    }

    /**
     * 退出页面
     */
    public static void bye() {
        System.out.println("* ********************** *");
        System.out.println("* ** bye!~ 欢迎下次使用 ** *");
        System.out.println("* ********************** *");
    }

    /**
     * 获取学生姓名
     *
     * @return 要查询的学生姓名
     */
    public static String getStuName() {
        System.out.print("请输入学生姓名：");
        return new Scanner(System.in).nextLine();
    }

    /**
     * 获取学生性别
     *
     * @return 要查询的学生性别
     */
    public static String getStuSex() {
        System.out.print("请输入学生性别（女：0 男：1 其他：2）：");
        return new Scanner(System.in).nextLine();
    }

    /**
     * 获取学生电话
     *
     * @return 要查询的学生电话
     */
    public static String getStuTel() {
        System.out.print("请输入学生电话号码：");
        return new Scanner(System.in).nextLine();
    }

    /**
     * 获取学生班级
     *
     * @return 要查询的学生班级
     */
    public static String getStuClass() {
        System.out.print("请输入学生班级：");
        return new Scanner(System.in).nextLine();
    }

    /**
     * 年龄二级菜单页面
     *
     * @return 用户输入的操作数
     */
    public static int secSelAgePage() {
        System.out.println("* *********************************** *");
        System.out.println("* ********** 查询功能选择页面 ********** *");
        System.out.println("* ********* 1 - 精确年龄查询 ********** *");
        System.out.println("* ********* 2 - 年龄区间查询 ********** *");
        System.out.println("* ********* 0 - 结束查询     ********** *");
        System.out.println("* *********************************** *");
        int num;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的选项：");
            num = sc.nextInt();
        } while (num < 0 || num > 2);
        return num;
    }

    /**
     * 获取要查询的年龄
     *
     * @return 查询的年龄
     */
    public static int getStuAge() {
        int age;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的年龄：");
            age = sc.nextInt();
        } while (age < 1 || age > 100);
        return age;
    }

    /**
     * 获取年龄区间
     *
     * @return 年龄区间
     */
    public static int[] getStuAgeBetween() {
        int[] age = new int[2];
        System.out.print("请输入最小年龄：");
        age[0] = new Scanner(System.in).nextInt();
        System.out.print("请输入最大年龄：");
        age[1] = new Scanner(System.in).nextInt();
        return age;
    }

    /**
     * 查询成绩的二级菜单页面
     *
     * @return
     */
    public static int secSelScorePage() {
        System.out.println("* *********************************** *");
        System.out.println("* ********** 查询功能选择页面 ********** *");
        System.out.println("* ********* 1 - 精确成绩查询 ********** *");
        System.out.println("* ********* 2 - 成绩区间查询 ********** *");
        System.out.println("* ********* 0 - 结束查询     ********** *");
        System.out.println("* *********************************** *");
        int num;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的选项：");
            num = sc.nextInt();
        } while (num < 0 || num > 2);
        return num;
    }

    /**
     * 获取要查询的成绩
     *
     * @return 要查询的成绩
     */
    public static float getStuScore() {
        int score;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的成绩：");
            score = sc.nextInt();
        } while (score < 0 || score > 100);
        return score;
    }

    /**
     * 获取成绩区间
     *
     * @return 成绩区间
     */
    public static int[] getStuScoreBetween() {
        int[] score = new int[2];
        System.out.print("请输入最低成绩：");
        score[0] = new Scanner(System.in).nextInt();
        System.out.print("请输入最高成绩：");
        score[1] = new Scanner(System.in).nextInt();
        return score;
    }

    /**
     * 添加学员信息页面
     *
     * @return 要添加的学生对象
     */
    public static Student addStuPage() {
        System.out.println("* ********************** *");
        System.out.println("* ***** 添加学员信息 ***** *");
        System.out.println("* ********************** *");

        System.out.print("请输入姓名（exit：退出添加）：");
        String name = new Scanner(System.in).nextLine();
        if (name.equals("exit")) {
            return null;
        }
        System.out.print("请输入性别（0：girl | 1：boy | 2：other）：");
        String sex = new Scanner(System.in).nextLine();
        System.out.print("请输入年龄：");
        int age = new Scanner(System.in).nextInt();
        System.out.print("请输入成绩：");
        float score = new Scanner(System.in).nextFloat();
        System.out.print("请输入电话号码：");
        String tel = new Scanner(System.in).nextLine();
        System.out.print("请输入班级：");
        String classid = new Scanner(System.in).nextLine();

        return new Student(name, sex, age, score, tel, classid);
    }


    /**
     * 确认是否删除的页面
     *
     * @return
     */
    public static boolean isDel() {
        System.out.print("确认是否删除：Y（确认） | N（取消）");
        switch (new Scanner(System.in).next()) {
            case "Y":
            case "y":
                return true;
            case "N":
            case "n":
                return false;
            default:
                System.out.println("输入有误！~");
                break;
        }
        return false;
    }

    /**
     * 修改学员信息，获取一个新的信息对象
     *
     * @param stu 旧的学生信息
     * @return 新的学生信息
     */
    public static Student editStu(Student stu) {
        System.out.println("* ********************** *");
        System.out.println("* ***** 修改学员信息 ***** *");
        System.out.println("* ********************** *");

        System.out.print("请输入姓名 - （" + stu.getName() + "）：");
        String name = new Scanner(System.in).nextLine();
        System.out.print("请输入性别（0：girl | 1：boy | 2：other） - （" + stu.getSex() + "）：");
        String sex = new Scanner(System.in).nextLine();
        System.out.print("请输入年龄 - （" + stu.getAge() + "）：");
        int age = new Scanner(System.in).nextInt();
        System.out.print("请输入成绩 - （" + stu.getScore() + "）：");
        float score = new Scanner(System.in).nextFloat();
        System.out.print("请输入电话号码 - （" + stu.getTel() + "）：");
        String tel = new Scanner(System.in).nextLine();
        System.out.print("请输入班级 - （" + stu.getClassid() + "）：");
        String classid = new Scanner(System.in).nextLine();

        return new Student(stu.getId(), name, sex, age, score, tel, classid);
    }

    /**
     * 结束学生信息管理界面
     * @return 是否结束管理
     */
    public static String overPage() {
        System.out.print("是否确认结束管理并返回上一级（Y：确认 | N：取消）：");
        return new Scanner(System.in).nextLine();
    }
}
